{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# DoF on Edges in Three Dimensions\n",
    "\n",
    "We describe general idea of the data structures generated in subroutine \n",
    "`dof3edge` for three dimensional simplex grids. We refer to [Simplicial Complex in Two Dimensions](../mesh/sc3.html) for the discussion of ordering and orientation of edges."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "`[elem2edge,edge] = dof3edge(elem)` constructs data structure for the\n",
    "lowest order edge element. In the output `elem2edge` is the elementwise\n",
    "pointer from `elem` to `edge`. The orientation of edges is from the smaller\n",
    "index to the bigger one. The indexing is the lexicographic order\n",
    "`locEdge = [1 2], [1 3], [1 4], [2 3], [2 4], [3 4]`\n",
    "and the ascend ordering is used. \n",
    "\n",
    "`[elem2edge,edge,elem2edgeSign] = dof3edge(elem)` also outputs elem2edgeSign\n",
    "which records the consistency of the local and the global edge orientation.\n",
    "If elem is the ascend ordering, then `elem2edgeSign` is 1 and not needed.\n",
    "\n",
    "See also `dofedge`."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Edges and local Edges"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "elem2edge =\n",
      "\n",
      "     1    12     5    20    11     4\n",
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjAAAAGkCAIAAACgjIjwAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAA\nB3RJTUUH5QkJER0e4sKVUgAAACR0RVh0U29mdHdhcmUATUFUTEFCLCBUaGUgTWF0aFdvcmtzLCBJ\nbmMuPFjdGAAAACJ0RVh0Q3JlYXRpb24gVGltZQAwOS1TZXAtMjAyMSAxMDoyOTozMDkPpD0AACAA\nSURBVHic7d17fFT1nf/xz4RckCSEW0BCqMglYMAoEgoRUVtbWxTEuttduVharGZrVpFHLd2yq6b2\nBypqoVLcRcRHlah42UILFQXECyAg4dJwETEi95AEyJUQSDLz++Pg7HQuJ3M/33PO6/noo49hMky+\nwc8n7+/5nnO+43C5XAIAgNESjB4AAAAiBBIAQBEEEgBACQQSAEAJBBIAQAkEEgBACQQSAEAJBBIA\nQAkEEgBACQQSAEAJBBIAQAkEEgBACQQSAEAJBBIAQAkEEgBACQQSAEAJBBIAQAkEEgBACQQSAEAJ\nBBIAQAkEEgBACQQSAEAJBBIAQAkEEgBACQQSAEAJBBIAQAkEEgBACQQSAEAJBBIAQAkEEgBACQQS\nAEAJBBIAQAkEEgBACQQSAEAJBBIAQAkEEgBACQQSAEAJBBIAQAkEEgBACQQSAEAJBBIAQAkEEgBA\nCQQSAEAJBBIAQAkEEgBACQQSAEAJBBIAQAkEEgBACQQSAEAJBBIAQAkEEgBACQQSAEAJBBIAQAkE\nEgBACQQSAEAJBBIAQAkEEgBACQQSAEAJBBIAQAkEEgBACQQSAEAJBBIAQAkEEgBACQQSAEAJBBIA\nQAkEEgBACQQSAEAJBBIAQAkEEgBACQQSAEAJBBIAQAkEEgBACQQSAEAJBBIAQAkEEgBACQQSAEAJ\nBBIAQAkEEgBACQQSAEAJBBIAQAkEEgBACQQSAEAJBBIAQAkEEgBACQQSAEAJBBIAQAkEEgBACQQS\nAEAJBBIAQAkEEgBACQQSAEAJBBIAQAkEEgBACQQSAEAJBBIAQAkEEgBACQQSAEAJBBIAQAkEEgBA\nCQQSAEAJBBIAQAkEEgBACQQSAEAJBBIAQAkEEgBACQQSAEAJBBIAQAkEEgBACQQSAEAJBBIAQAkE\nEgBACQQSAEAJBBIAQAkEEgBACQQSAEAJBBIAQAkEEgBACQQSAEAJBBIAQAkEEgBACQQSAEAJBBIA\n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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%% Local Labeling of DOFs\n",
    "node = [1,0,0; 0,1,0; 0,0,0; 0,0,1];\n",
    "elem = [1 2 3 4];\n",
    "localEdge = [1 2; 1 3; 1 4; 2 3; 2 4; 3 4];\n",
    "edge = zeros(20,2);\n",
    "edge([1 12 5 20 11 4],:) = localEdge;\n",
    "elem2edge = [1 12 5 20 11 4];\n",
    "figure(1); clf;\n",
    "set(gcf,'Units','normal'); \n",
    "set(gcf,'Position',[0,0,0.6,0.4]);\n",
    "subplot(1,2,1)\n",
    "showmesh3(node,elem);\n",
    "view(-14,12);\n",
    "findnode3(node);\n",
    "findedge(node,localEdge,'all');\n",
    "subplot(1,2,2)\n",
    "showmesh3(node,elem);\n",
    "view(-14,12);\n",
    "findnode3(node);\n",
    "findedge(node,edge,elem2edge');\n",
    "display(elem2edge);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The 6 dofs associated to edges in a tetrahedron is stored as `[1 2; 1 3; 1 4; 2 3; 2 4; 3 4]`. Here `[1 2 3 4]` are 4 vertices of the tetrahedron.\n",
    "\n",
    "For a mesh consisting of several tetrahedrons, all local edges are collected and the duplication is eliminated to form `edge` matrix. The pointer `elem2edge(:,1:6)` records the mapping from the local index to the global index of 6 edges in one tetrahedron. The left figure is the local edge index and the right is the global one."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Orientation of Edges"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "elem2edge =\n",
      "\n",
      "     1     2     3     4     5     6\n",
      "\n",
      "\n",
      "elem2edgeSign =\n",
      "\n",
      "     1     1    -1    -1    -1    -1\n",
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjAAAAGkCAIAAACgjIjwAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAA\nB3RJTUUH5QkJER4vmDHGqwAAACR0RVh0U29mdHdhcmUATUFUTEFCLCBUaGUgTWF0aFdvcmtzLCBJ\nbmMuPFjdGAAAACJ0RVh0Q3JlYXRpb24gVGltZQAwOS1TZXAtMjAyMSAxMDozMDo0N6hCwWMAACAA\nSURBVHic7d17fFT1ue/xZ5KQcA+IgElRgWKAoIgECxQUjrJtUUCrdm9FqlaPTVv6stLTUnWDjSK0\nG9vG06JHaqG1BEQLFQsVERSlIKiEpEEQMIJEINwxhEtCksn5Y5XlOLfMZc2sZ9b6vF999TUzmSS/\nyPPM9/f7rTVrPM3NzQIAgN3S7B4AAAAiBBIAQAkCCQCgAoEEAFCBQAIAqEAgAQBUIJAAACoQSAAA\nFQgkAIAKBBIAQAUCCQCgAoEEAFCBQAIAqEAgAQBUIJAAACoQSAAAFQgkAIAKBBIAQAUCCQCgAoEE\nAFCBQAIAqEAgAQBUIJAAACoQSAAAFQgkAIAKBBIAQAUCCQCgAoEEAFCBQAIAqEAgAQBUIJAAACoQ\nSAAAFQgkAIAKBBIAQAUCCQCgAoEEAFCBQAIAqEAgAQBUIJAAACoQSAAAFQgkAIAKBBIAQAUCCQCg\nAoEEAFCBQAIAqEAgAQBUIJAAACoQSAAAFQgkAIAKBBIAQAUCCQCgAoEEAFCBQAIAqEAgAQBUIJAA\nACoQSAAAFQgkAIAKBBIAQAUCCQCgAoEEAFCBQAIAqEAgAQBUIJAAACoQSAAAFQgkAIAKBBIAQAUC\nCQCgAoEEAFCBQAIAqEAgAQBUIJAAACoQSAAAFQgkAIAKBBIAQAUCCQCgAoEEAFCBQAIAqEAgAQBU\nIJAAACoQSAAAFQgkAIAKBBIAQAUCCQCgAoEEAFCBQAIAqEAgAQBUIJAAACoQSAAAFQgkAIAKBBIA\nQAUCCQCgAoEEAFCBQAIAqEAgAQBUIJAAACoQSAAAFQgkAIAKBBIAQAUCCQCgAoEEAFCBQAIAqEAg\nAQBUIJAAACoQSAAAFQgkAIAKBBIAQAUCCQCgAoEEAFCBQAIAqEAgAQBUIJAAACoQSAAAFQgkAIAK\nBBIAQAUCCQCgAoEEAFCBQAIAqEAgAQBUIJAAACoQSAAAFQgkAIAKBBIAQAUCCQCgAoEEAFCBQAIA\n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\nCQCgAoEEAFCBQAIAqEAgAQBUIJAAACoQSAAAFQgkAIAKBBIAQAUCCQCgAoEEAFCBQAIAqEAgAQBU\nIJAAACoQSAAAFQgkAIAKBBIAQAUCCQCgAoEEAFCBQAIAqEAgAQBUIJAAACoQSAAAFQgkAIAKBBIA\nQAUCCQCgAoEEAFCBQAIAqEAgAQBUIJAAACoQSAAAFQgkAIAKBBIAQAUCCQCgAoEEAFCBQAIAqEAg\nAQBUIJAAACoQSAAAFQgkAIAKBBIAQAUCCQCgAoEEAFCBQAIAqEAgAQBUIJAAACoQSAAAFQgkAIAK\nBBIAQAUCCQCgAoEEAFCBQAIAqEAgAQBUIJAAACoQSAAAFQgkAIAKBBIAQAUCCQCgAoEEAFCBQAIA\nqEAgAQBUIJAAACoQSAAAFQgkAIAKBBIAQAUCCQCgAoEEAFCBQAIAqEAgAQBUIJAAACoQSAAAFQgk\nAIAKBBIAQAUCCQCgAoEEAFCBQAIAqEAgAQBUIJAAACoQSAAAFQgkAIAKBBIAQAUCCQCgAoEEAFCB\nQAIAqEAgAQBUIJAAACoQSAAAFQgkAIAKBBIAQAUCCQCgAoEEAFCBQAIAqEAgAQBUIJAAACoQSAAA\nFQgkAIAKBBIAQAUCCQCgAoEEAFCBQAIAqEAgAQBUIJAAACoQSAAAFf4/Kz4+RaE8yJsAAAAASUVO\nRK5CYII=\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%% Orientation of Edges\n",
    "node = [1,0,0; 0,1,0; 0,0,0; 0,0,1];\n",
    "elem = [2 4 3 1];\n",
    "localEdge = [elem(:,1) elem(:,2); elem(:,1) elem(:,3); elem(:,1) elem(:,4); ...\n",
    "             elem(:,2) elem(:,3); elem(:,2) elem(:,4); elem(:,3) elem(:,4)];\n",
    "edge = sort(localEdge,2);\n",
    "elem2edge = [1 2 3 4 5 6];\n",
    "elem2edgeSign = [1 1 -1 -1 -1 -1];     \n",
    "figure(1); clf;\n",
    "set(gcf,'Units','normal'); \n",
    "set(gcf,'Position',[0,0,0.6,0.4]);\n",
    "subplot(1,2,1)\n",
    "showmesh3(node,elem);\n",
    "view(-14,12);\n",
    "tempnode = node(elem(:),:);\n",
    "findnode3(tempnode);\n",
    "findedge(node,localEdge,'all','vec');\n",
    "subplot(1,2,2)\n",
    "showmesh3(node,elem);\n",
    "view(-14,12);\n",
    "findnode3(node);\n",
    "findedge(node,edge,'all','vec');\n",
    "display(elem2edge)\n",
    "display(elem2edgeSign)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The edge `[i,j]` is orientated in the direction such that `i<j`, where `i,j`\n",
    "are the *global* indices. The local 6 edges may not be consistent with this orientation. Therefore `elem2edgeSign` is used to indicate the consistency.\n",
    "\n",
    "The nodal indices in the left figure is local while that in the right is the global one. The local direction and global direction of edges is indicated by different edge vectors.\n",
    "\n",
    "The local vertex index and orientation of local edges are shown on the left while the right is the global version. Note that we intentionally set `elem = [2 4 3 1]` such that inconsistency arises. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "elem2edge =\n",
      "\n",
      "  6�6 uint32 matrix\n",
      "\n",
      "    1    3    7    8   10   14\n",
      "    2    3    7   11   13   14\n",
      "    4    5    7   15   17   18\n",
      "    4    6    7   16   17   19\n",
      "    1    5    7    9   10   18\n",
      "    2    6    7   12   13   19\n",
      "\n",
      "\n",
      "elem2edgeSign =\n",
      "\n",
      "     1     1     1     1     1     1\n",
      "     1     1     1     1     1     1\n",
      "     1     1     1     1     1     1\n",
      "     1     1     1     1     1     1\n",
      "     1     1     1     1     1     1\n",
      "     1     1     1     1     1     1\n",
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nRK5CYII=\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "[node,elem] = cubemesh([0,1,0,1,0,1],1);\n",
    "[elem2edge,edge,elem2edgeSign] = dof3edge(elem);\n",
    "figure(1); clf;\n",
    "showmesh3(node,elem,[],'FaceAlpha',0.25);\n",
    "view(-30,10);\n",
    "findedge(node,edge,'all','vec');\n",
    "findelem3(node,elem,[1 3]');\n",
    "display(elem2edge);\n",
    "display(elem2edgeSign);"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Matlab",
   "language": "matlab",
   "name": "matlab"
  },
  "language_info": {
   "codemirror_mode": "octave",
   "file_extension": ".m",
   "help_links": [
    {
     "text": "MetaKernel Magics",
     "url": "https://github.com/calysto/metakernel/blob/master/metakernel/magics/README.md"
    }
   ],
   "mimetype": "text/x-matlab",
   "name": "matlab",
   "version": "0.14.3"
  },
  "toc": {
   "colors": {
    "hover_highlight": "#DAA520",
    "navigate_num": "#000000",
    "navigate_text": "#333333",
    "running_highlight": "#FF0000",
    "selected_highlight": "#FFD700",
    "sidebar_border": "#EEEEEE",
    "wrapper_background": "#FFFFFF"
   },
   "moveMenuLeft": true,
   "nav_menu": {
    "height": "48px",
    "width": "252px"
   },
   "navigate_menu": true,
   "number_sections": true,
   "sideBar": true,
   "threshold": 4,
   "toc_cell": false,
   "toc_section_display": "block",
   "toc_window_display": false,
   "widenNotebook": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
